/****

    activequant - activestocks.eu

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

	
	contact  : contact@activestocks.eu
    homepage : http://www.activestocks.eu

 ****/
package org.activequant.core.domainmodel.options;

import java.io.Serializable;

import org.activequant.core.domainmodel.InstrumentSpecification;
import org.activequant.core.types.OrderSide;

/**
 * 
 * Strangle option combination<br>
 * A Straddle subclass and IOptionCombination implementation. Holds the following associated/inherited variables:
 * <ul>
 * <li>underlying(InstrumentSpecification)</li>
 * <li>call(InstrumentSpecification)</li>
 * <li>put(InstrumentSpecification)</li>
 * <li>side(OrderSide)</li>
 * <li>positionSizeCall(double)</li>
 * <li>positionSizePut(double)</li>
 * </ul>
 * <br>
 * <b>History:</b><br>
 * - [21.09.2007] Created (Ulrich Staudinger)<br>
 * - [27.09.2007] Fixed exceptions ... (Erik Nijkamp)<br>
 * 
 * @author Ulrich Staudinger
 */
public class Strangle extends Straddle implements Serializable {

	private static final long serialVersionUID = -6500868392581253503L;
	/**
	 * constructs a Strangle(Straddle subclass and IOptionCombination implementation) using the given
	 * underlying(InstrumentSpecification), call(InstrumentSpecification),
	 * put(InstrumentSpecification) and side(OrderSide) to set its associated/inherited
	 * underlying(InstrumentSpecification), call(InstrumentSpecification),
	 * put(InstrumentSpecification) and side(OrderSide).<br/>
	 * It also verifies that the contractRight(String) of the associated/inherited
	 * call(InstrumentSpecification) and put(InstrumentSpecification) are "C"
	 * and "P" accordingly
	 * @param underlying
	 * @param call
	 * @param put
	 * @param side
	 */
	public Strangle(InstrumentSpecification underlying, InstrumentSpecification call, InstrumentSpecification put, OrderSide side) {
		super(underlying, call, put, side);
	}
	/**
	 * constructs a Strangle(Straddle subclass and IOptionCombination implementation) using the given
	 * underlying(InstrumentSpecification), call(InstrumentSpecification) and
	 * put(InstrumentSpecification) to set its associated/inherited
	 * underlying(InstrumentSpecification), call(InstrumentSpecification) and
	 * put(InstrumentSpecification).<br/>
	 * Its associated/inherited side(OrderSide) is set to OrderSide.BUY<br/>
	 * It also verifies that the contractRight(String) of the associated/inherited
	 * call(InstrumentSpecification) and put(InstrumentSpecification) are "C"
	 * and "P" accordingly
	 * @param underlying
	 * @param call
	 * @param put
	 */
	public Strangle(InstrumentSpecification underlying, InstrumentSpecification call, InstrumentSpecification put) {
		super(underlying, call, put);
	}
	/**
	 * constructs a Strangle(Straddle subclass and IOptionCombination implementation) using the given variables to set its associated/inherited ones.<br/>
	 * It also verifies that the contractRight(String) of the associated/inherited call(InstrumentSpecification) and put(InstrumentSpecification) are "C" and "P" accordingly
	 * @param underlying
	 * @param call
	 * @param put
	 * @param positionSizeCall
	 * @param positionSizePut
	 * @param side
	 */
	public Strangle(InstrumentSpecification underlying, InstrumentSpecification call, InstrumentSpecification put, double positionSizeCall, double positionSizePut, OrderSide side) {

		super(underlying, call, put, positionSizeCall, positionSizePut, side);
	}

}
